package com.zhiyume.shiro;

import com.zhiyume.dao.entity.TAdminSys;
import com.zhiyume.dao.entity.TMenu;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.mgt.RealmSecurityManager;
import org.apache.shiro.session.Session;

import java.util.List;

/** 认证管理 */
public class AdminSecurityManager {

	/**管理员 */
	public static final String ADMIN_ROLE_CODE = "admin";

	/**
	 * 获取session 中登录对象
	 * 
	 * @return 返回登录系统的用户信息
	 * */
	public static TAdminSys getSessionTAdminSys() {
		TAdminSys TAdminSys = (TAdminSys) SecurityUtils.getSubject().getPrincipal();
		return TAdminSys;
	}

	/**
	 * 获取session 中的信息
	 * */
	public static Object getSessionAttribute(String sessionKey) {
		Session session = SecurityUtils.getSubject().getSession();
		return session.getAttribute(sessionKey);
	}

	/**
	 * 设置session 中的信息
	 * */
	public static void setSessionAttribute(String sessionKey, Object obj) {
		Session session = SecurityUtils.getSubject().getSession();
		session.setAttribute(sessionKey, obj);
	}

	/** 删除session 中的信息 */
	public static void deleteSesionAttribute(String sessionKey) {
		Session session = SecurityUtils.getSubject().getSession();
		session.removeAttribute(sessionKey);
	}

	/** 当前用户注销 */
	public static void logout() {
		SecurityUtils.getSubject().logout();
	}

	/**
	 * 判断当前用户是否是管理员角色
	 * 
	 * @return 是否是管理员
	 */
	public static boolean isSessionUserAdminRole() {
		return SecurityUtils.getSubject().hasRole(ADMIN_ROLE_CODE);
	}
    
	/**获取当前角色对应的菜单信息*/
	public static List<TMenu> getMenuList(){
		TAdminSys TAdminSys = getSessionTAdminSys();
		return TAdminSys.getMenuList();
	}
	
	
	/**
	 * 清除缓存
	 * */
	 public static void clearCache(){
		 RealmSecurityManager realmSerityManager =  (RealmSecurityManager) SecurityUtils.getSecurityManager();
		 ShiroRealmImpl securityReam =  (ShiroRealmImpl) realmSerityManager.getRealms().iterator().next();
		 //securityReam.realDoClearCache(SecurityUtils.getSubject().getPrincipals());
	 }
}
